package types

type WxDeviceTagQuery struct {
	SubordinateOrganizeId int64 `json:"subordinateOrganizeId,optional"` // 组织Id
	Page                  int32 `json:"page"`                           // 页码
	PageSize              int32 `json:"pageSize"`                       // 每页数量
	OrganizeId            int64 `json:"organizeId,optional"`            // 组织Id
	IsBinding             int32 `json:"isBinding,optional"`             // 是否绑定
}

type WxListDevice struct {
	List  []WxDeviceInfo `json:"list"`  // 设备列表
	Total int64          `json:"total"` // 设备总数
}

type WxDeviceInfo struct {
	Id                  int64  `json:"id"`                  // 设备Id
	DeviceSn            string `json:"deviceSn"`            // 设备SN
	GoodsId             int64  `json:"goodsId"`             // 商品Id
	OutCode             string `json:"outCode"`             // 出库设备外码
	DeviceName          string `json:"deviceName"`          // 设备名称
	BrandName           string `json:"brandName"`           // 品牌名称
	CategoryName        string `json:"categoryName"`        // 分类名称
	TypeName            string `json:"typeName"`            // 类型名称
	BrandId             int64  `json:"brandId"`             // 品牌Id
	TypeId              int64  `json:"typeId"`              // 类型Id
	CategoryId          int64  `json:"categoryId"`          // 分类Id
	Status              int32  `json:"status"`              // 设备状态
	IsBinding           int32  `json:"isBinding"`           // 是否绑定
	BindingOrganization string `json:"bindingOrganization"` // 绑定组织
	TagsDescription     string `json:"tagsDescription"`     // 标签描述
	DealerCompanyName   string `json:"dealerCompanyName"`   // 经销商公司名称
}

type WxListDeviceResp struct {
	Resp
	Data WxListDevice `json:"data"` // 设备列表
}
type ListDeviceByOutCodeAndNameReq struct {
	Page     int32 `json:"page"`     // 页码
	PageSize int32 `json:"pageSize"` // 每页数量
}
type DeviceInfoReq struct {
	Id         int64  `json:"id"`
	DeviceSn   string `json:"deviceSn,optional"`
	OutCode    string `json:"outCode"`             // 设备外码
	CategoryId int64  `json:"categoryId"`          // 设备分类id
	BrandId    int64  `json:"brandId"`             // 设备品牌id
	TypeId     int64  `json:"typeId"`              // 设备型号id
	TypeName   string `json:"typeName"`            // 设备型号名称
	DeviceName string `json:"deviceName"`          // 设备名称
	OrganizeId int64  `json:"organizeId,optional"` // 所属组织机构id
}

type WxHeadClassRegisterDeviceInfo struct {
	OutCode      string `json:"outCode"`      // 出库设备外码
	CategoryId   int64  `json:"categoryId"`   // 分类Id
	CategoryName string `json:"categoryName"` // 分类名称
	TypeId       int64  `json:"typeId"`       // 类型Id
	TypeName     string `json:"typeName"`     // 类型名称
	BrandName    string `json:"brandName"`    // 品牌名称
	BrandId      int64  `json:"brandId"`      // 品牌Id
	DeviceName   string `json:"deviceName"`   // 设备名称
}

// organize_id + user_id
type CountryInfo struct {
	Id     int64  `json:"id"`
	Code   string `json:"code"`
	EnName string `json:"enName"`
	Name   string `json:"name"`
}

type CountryInfoList struct {
	CountryList []CountryInfo `json:"countryList"`
}

type CountryInfoListResp struct {
	Resp
	Data CountryInfoList `json:"data"`
}

type DeviceRegisterReq struct {
	OutCode           string `json:"outCode"`        // 出库设备外码
	ProductId         int64  `json:"productId"`      // 商品Id
	DeviceRegistBy    int64  `json:"deviceRegistBy"` // 设备注册人Id
	CountryId         int64  `json:"countryId"`
	From              string `json:"from"`              // 来源
	ActivateResultUrl string `json:"activateResultUrl"` // 激活结果通知地址
}

type DeviceActivateInfo struct {
	AuthCode     string `json:"authCode"`     // 授权码
	ExpireAt     int64  `json:"expireAt"`     // 过期时间
	ActivateCode string `json:"activateCode"` // 激活码
}
type DeviceActivateInfoResp struct {
	Data DeviceActivateInfo `json:"data"` // 设备激活信息
	Resp
}

type UpdateDeviceNameReq struct {
	Id                  int64  `json:"id"`                  // 设备Id
	DeviceName          string `json:"deviceName"`          // 设备名称
	OutCode             string `json:"outCode"`             // 出库设备外码
	Status              int32  `json:"status"`              // 设备状态
	IsBinding           int32  `json:"isBinding"`           // 是否绑定
	DeviceSn            string `json:"deviceSn"`            // 设备SN
	BindingOrganization string `json:"bindingOrganization"` // 绑定组织
	BrandId             int64  `json:"brandId"`             // 品牌Id
	GoodsId             int64  `json:"goodsId"`             // 商品Id
	BrandName           string `json:"brandName"`           // 品牌名称
	CategoryId          int64  `json:"categoryId"`          // 分类Id
	CategoryName        string `json:"categoryName"`        // 分类名称
	TypeId              int64  `json:"typeId"`              // 类型Id
	TypeName            string `json:"typeName"`            // 类型名称
	DealerCompanyName   string `json:"dealerCompanyName"`   // 经销商公司名称
}

type CooperativeDoctorListInfo struct {
	Id             uint64 `json:"id"`                                   // 主键id
	DoctorUsername string `json:"doctorUsername" form:"doctorUsername"` //医生账号
	DoctorNickname string `json:"doctorNickname" form:"doctorNickname"` //医生昵称(用户自己定义)
}
type CooperativeDoctorListAll struct {
	List []CooperativeDoctorListInfo `json:"list"`
}
type CooperativeDoctorListResp struct {
	Data CooperativeDoctorListAll `json:"data"` // 设备列表
	Resp
}

type MqttAuthCodeListReq struct {
	Page           int64  `json:"page"`
	Size           int64  `json:"size"`
	DeviceSn       string `json:"deviceSn" form:"deviceSn"`                               //设备编号
	DoctorUsername string `json:"doctorUsername,optional" form:"doctorUsername,optional"` //医生账号
	DoctorNickname string `json:"doctorNickname,optional" form:"doctorNickname,optional"` //医生昵称(用户自己定义)
	AuthExpireTime int64  `json:"authExpireTime,optional" form:"authExpireTime,optional"` //授权到期时间
}

type MqttAuthCodeForApi struct {
	Id          uint64 `json:"id,optional" form:"id,optional"`                   // 主键id
	CreatedTime int64  `json:"createdTime,optional" form:"createdTime,optional"` // 创建时间，这是给前端看的，所以应该由时间戳转成对应的日期字符串
	UpdatedTime int64  `json:"updatedTime,optional" form:"updatedTime,optional"` // 创建时间，这是给前端看的，所以应该由时间戳转成对应的日期字符串
	// OrganizationId uint64 `json:"organizationId,optional" form:"organizationId,optional"`   //组织ID
	DeviceSn string `json:"deviceSn" form:"deviceSn"` //设备编号
	// AuthCode       string `json:"authCode" form:"authCode"`                    //授权码 前端不显示
	DoctorUsername string `json:"doctorUsername" form:"doctorUsername"` //医生账号
	DoctorNickname string `json:"doctorNickname" form:"doctorNickname"` //医生昵称
	AuthExpireTime int64  `json:"authExpireTime" form:"authExpireTime"` //授权到期时间
	Status         int64  `json:"status" form:"status"`
	OutCode        string `json:"outCode" form:"outCode"`
	CategoryName   string `json:"categoryName" form:"categoryName"`
	BrandName      string `json:"brandName" form:"brandName"`
	TypeName       string `json:"typeName" form:"typeName"`
	AuthCode       string `json:"authCode" form:"authCode"`
}
type MqttAuthCodeList struct {
	List  []MqttAuthCodeForApi `json:"list"`
	Total int64                `json:"total"`
}
type MqttAuthCodeListResp struct {
	Data MqttAuthCodeList `json:"data"` // 设备列表
	Resp
}

type MqttAuthCodeUpdateReq struct {
	Id             uint64 `json:"id" form:"id"`                         // 主键id
	AuthExpireTime int64  `json:"authExpireTime" form:"authExpireTime"` //授权到期时间
}

type MqttAuthCodeDeleteReq struct {
	Id uint64 `json:"id" form:"id"` // 主键id
}
type MqttAuthCodeUpdateStatusReq struct {
	Id     uint64 `json:"id" form:"id"`         // 主键id
	Status int32  `json:"status" form:"status"` // 状态
}

type CreateMqttAuthCodeReq struct {
	AuthExpireTime int64  `json:"authExpireTime" form:"authExpireTime"` //授权到期时间
	BrandName      string `json:"brandName" form:"brandName"`           //品牌名称
	CategoryName   string `json:"categoryName" form:"categoryName"`     //分类名称
	DeviceSn       string `json:"deviceSn" form:"deviceSn"`             //设备编号
	DoctorNickname string `json:"doctorNickname" form:"doctorNickname"` //医生昵称
	DoctorUsername string `json:"doctorUsername" form:"doctorUsername"` //医生账号
	OutCode        string `json:"outCode" form:"outCode"`               //设备外码
	TypeName       string `json:"typeName" form:"typeName"`             //类型名称
}

type ListDataBridgeReq struct {
	Page       int64  `json:"page"`
	Size       int64  `json:"size"`
	SrcOutCode string `json:"srcOutCode" form:"srcOutCode"` // 源设备外码
}

type ListDataBridgeResp struct {
	Data DataBridgeList `json:"data"` // 设备列表
	Resp
}
type DataBridgeList struct {
	List  []DataBridgeInfo `json:"list"`
	Total int64            `json:"total"`
}
type DataBridgeInfo struct {
	Id           uint64 `json:"id"`
	SrcOutCode   string `json:"srcOutCode"`
	SrcDeviceSn  string `json:"srcDeviceSn"`
	DistOutCode  string `json:"distOutCode"`
	DistDeviceSn string `json:"distDeviceSn"`
	IsOk         int32  `json:"isOk"`
}

type DateBridgeBindReq struct {
	Id           uint64 `json:"id" form:"id"`                     // 主键id
	DistDeviceSn string `json:"distDeviceSn" form:"distDeviceSn"` // 目标设备编号
	DistOutCode  string `json:"distOutCode" form:"distOutCode"`   // 目标设备外码
	IsOk         int32  `json:"isOk" form:"isOk"`                 // 是否成功
	MessageTypes string `json:"messageTypes" form:"messageTypes"` // 消息类型
	SrcDeviceSn  string `json:"srcDeviceSn" form:"srcDeviceSn"`   // 源设备编号
	SrcOutCode   string `json:"srcOutCode" form:"srcOutCode"`     // 源设备外码
}

type WxCustomDeviceId struct {
	Id         int64 `json:"id"`                  // 设备id
	OrganizeId int64 `json:"organizeId,optional"` // 所属组织机构id
}
